package com.lantosec.hmrp.modules.eval.mapper;

import com.lantosec.hmrp.core.kit.PageVO;
import com.lantosec.hmrp.modules.eval.entity.*;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.lantosec.hmrp.modules.eval.vo.EvalPlanVO;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * <p>
 * 考评计划 Mapper 接口
 * </p>
 *
 * @author AutoCode
 * @since 2020-03-17
 */
public interface EvalPlanMapper extends BaseMapper<EvalPlan> {

    List<EvalPlanVO> queryAll(PageVO<EvalPlanVO> page,@Param("startDate") String startDate, @Param("endDate") String endDate, @Param("evalPlanName") String evalPlanName,
                              @Param("evalPlanCycle") Integer evalPlanCycle, @Param("evalPlanType") Integer evalPlanType, @Param("evalMode") Integer evalMode,
                              @Param("state") Integer state);

    public void saveEvalPlanItem(@Param("parm") EvalPlanItem parm);

    public void saveEvalPlanExecutor(@Param("parm") EvalPlanExecutor parm);

    public void saveEvalPlanTarget(@Param("parm") EvalPlanTarget parm);

    public List<EvalPlanItem> getEvalPlanDetailed(@Param("evalPlanId") Integer evalPlanId);

    public List<EvalPlanExecutor> getEvalPlanExecutor(@Param("evalPlanId") Integer evalPlanId);

    public List<EvalPlanTarget> getEvalPlanTarget(@Param("evalPlanId") Integer evalPlanId,@Param("targetMode") Integer targetMode);

    List<EvalTaskItem> getPlanDetailInfo(Integer taskId);

    void deleteEvalPlanItem(@Param("evalPlanId") Integer evalPlanId);

    void deleteEvalPlanExecutor(@Param("evalPlanId") Integer evalPlanId);

    void deleteEvalPlanTarget(@Param("evalPlanId") Integer evalPlanId);

    List<EvalPlan> getPlanBaseInfo(@Param("evalPlanId") Integer evalPlanId);
    
    void saveEvalTask(@Param("task") EvalTask task);

    void saveEvalTaskItem(@Param("taskItem") EvalTaskItem taskItem);

    /**
     * 查询部门的相同岗位
     * @param deptList
     * @param size
     * @param positionId
     * @return
     */
    String getSysDeptPosition(@Param("deptList") List<String> deptList, @Param("size") Integer size, @Param("positionId") String positionId);

    //List<EvalTaskDetailed> getMonuthPlanDetailInfo(Integer taskId);
}
